#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2023/12/15 18:43
# @Author  : FuKai ZHANG
# @File    : case_run_time_decorator.py
# @Description :给用例设置等待时长，如果超过等待时间，则打印错误日志
from utils.logging_tools.log_control import ERROR


def execution_duration(number: int):
    """
    封装统计函数执行时间装饰器
    :param number: 函数预计运行时长
    :return:
    """

    def decorator(func):
        def swapper(*args, **kwargs):
            res = func(*args, **kwargs)
            run_time = res.response_time
            # 计算时间戳毫米级别，如果时间大于number，则打印 函数名称 和运行时间
            if run_time > number:
                ERROR.error(
                    "\n==============================================\n"
                    "测试用例执行时间较长，请关注.\n"
                    "函数运行时间: %s ms\n"
                    "测试用例相关数据: %s\n"
                    "================================================="
                    , run_time, res)
            return res

        return swapper

    return decorator
